home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
t_os
/
io5
/
io5main.c
< prev
next >
Wrap
Text File
|
1993-11-30
|
4KB
|
174 lines
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
char *guiEgbPtr ; /* EGB のワークアドレス */
int backid = -1 ;
int menuid = -1 ;
int mitemid = -1 ;
int submenuid = -1 ;
int submitem[4] = -1 ;
int dialogid = -1 ;
int dialogmessageid[5] = -1 ;
int numboxid1 = -1 ;
int numboxid2 = -1 ;
int numboxid3 = -1 ;
int execdialogid = -1 ;
int resultdialog = -1 ;
int textid = -1 ;
int resulttitle = -1 ;
int Message_00d8 = -1 ;
int DButton_00da = -1 ;
int Message_00dc = -1 ;
int button = -1;
char first = 'y';
void main()
{
extern int APL_init() ;
/* 致命的エラーハンドラの登録 */
FM_SetVector() ;
/* 初期化処理 */
if (MMI_Open( NULL ) == NOERR)
{
/* 初期化に成功すればメインループに入る. */
if (APL_init() == NOERR)
MMI_ExecSystem() ;
}
/* 終了処理 */
MMI_Close() ;
/* 致命的エラーハンドラの復帰 */
FM_ResetVector() ;
}
int APL_init()
{
extern MMIINIT initDataIO5 ;
extern MMIINIT initDataIO5DIALG ;
extern MMIINIT initDataIO5TEXT ;
register int ret ;
/* EGB ワークアドレスの取得. */
guiEgbPtr = MMI_GetEgbPtr() ;
/* ハイパ型部品の初期化 */
if ((ret = MMI_initHyper()) < 0)
return ret ;
/* ダイアログ型部品の初期化 */
if ((ret = MMI_initDialogL40()) < 0)
return ret ;
/* メッセージ型部品の初期化 */
if ((ret = MMI_initMessageL40()) < 0)
return ret ;
/* メニュー型部品の初期化 */
if ((ret = MMI_initMenuL40()) < 0)
return ret ;
/* ボタン型部品の初期化 */
if ((ret = MMI_initButtonL40()) < 0)
return ret ;
/* ドロウボタン型部品の初期化 */
if ((ret = MMI_initDrawButtonL40()) < 0)
return ret ;
/* アイコンボタン型部品の初期化 */
if ((ret = MMI_initIconL40()) < 0)
return ret ;
/* メニューアイテム型部品の初期化 */
if ((ret = MMI_initMenuItemL40()) < 0)
return ret ;
/* テキスト型部品の初期化 */
if ((ret = MMI_initTextL40()) < 0)
return ret ;
/* 数値入力型部品の初期化 */
if ((ret = MMI_initNumBoxL40()) < 0)
return ret ;
/* 背景データの初期化 */
/* データの登録 */
if ((ret = MMI_Init(&initDataIO5)) < 0)
return ret ;
if ((ret = MMI_Init(&initDataIO5DIALG)) < 0)
return ret ;
if ((ret = MMI_Init(&initDataIO5TEXT)) < 0)
return ret ;
/* 背景を表示する */
MMI_SendMessage(MMI_GetBaseObj(), MM_SHOW, 0) ;
return NOERR ;
}
/* initDataIO5:submitem[1]:MJ_MITEML40の呼び出し関数 */
int procfunc(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
if(first == 'n'){
MMI_SendMessage(resultdialog,MM_ERASE,0);
MMI_SendMessage(resultdialog,MM_DETACH,0);
}
MMI_SendMessage(submitem[1],MM_ENABLE,1,FALSE);
MMI_SendMessage(dialogid,MM_ATTACH,1,MMI_GetBaseObj());
MMI_SendMessage(dialogid,MM_SHOW,0);
return NOERR ;
}
/* initDataIO5:submitem[3]:MJ_MITEML40の呼び出し関数 */
int termfunc(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
MMI_SendMessage(submitem[1],MM_ENABLE,1,TRUE);
MMI_SetHaltFlag(TRUE);
return NOERR ;
}
/* initDataIO5DIALG:execdialogid:MJ_DBUTTONL40の呼び出し関数 */
int execfunc(kobj, messId, argc, pev, trigger)
int kobj ;
int messId ;
int argc ;
EVENT *pev ;
int trigger ;
{
int var1,var2,var3,min,max,delta,ptColum,ans;
static char chr[80];
MMI_SendMessage(numboxid1,MM_GETNUMBOX,5,&var1,&min,&max,&delta,&ptColum);
MMI_SendMessage(numboxid2,MM_GETNUMBOX,5,&var2,&min,&max,&delta,&ptColum);
MMI_SendMessage(numboxid3,MM_GETNUMBOX,5,&var3,&min,&max,&delta,&ptColum);
ans = ( 70*var1 + 21*var2 + 15*var3 ) % 105;
if( ans == 0 ) ans = 105;
strcat(chr," ");
sprintf(chr,"%3d",ans);
MMI_SendMessage(textid,MM_SETTEXT,3,chr,3,FALSE);
MMI_SendMessage(textid,MM_SHOW,0);
MMI_SendMessage(dialogid,MM_ERASE,0);
MMI_SendMessage(dialogid,MM_DETACH,0);
MMI_SendMessage(resultdialog,MM_ATTACH,1,MMI_GetBaseObj());
MMI_SendMessage(resultdialog,MM_SHOW,0);
first = 'n';
return NOERR ;
}